public class code1 {
//    力扣 150 路径总和
public boolean hasPathSum(TreeNode root, int targetSum) {
    // 这个解法是官方题解的递归
    // 不是很好理解，在这里简单写一下

    // 第一步，当如果当前节点为 null 就返回 false
    if(root == null) {
        return false;
    }
    // 题目要求的是，找到最后的节点必须是叶子节点(也就是说是最深层的节点，节点的左右子树都为 null)
    if(root.left == null && root.right == null) {
        // 让目标函数和最后节点的值进行比较，如果相等就是 true 否则就是 false
        return targetSum == root.val;
    }

    // 进行递归调用
    // 在这里进行递归调用时，将 目标值和当前节点的值进行相减
    // 最终如果有符合条件的节点，就会出现 剩余的目标值和该节点相等。(只要在相减一次就位 0 了！)
    return hasPathSum(root.left, targetSum - root.val) || hasPathSum(root.right, targetSum - root.val);
}
}
